#ifndef __CONFIG_HPP__
#define __CONFIG_HPP__

/**
 *  This file is part of PennerBot
 *
 *  Copyright (C) 2010 microkernel
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#include <string>
#include <vector>

namespace PBot
{
namespace Core
{

/// A class which holds all values necessary for a single bot
struct Config
{
public:

    Config()
     : id(0), game(Config::PENNERGAME_H), americanFormat(false), hasCaptcha(true),
       BC_enabled(true), BC_minwait(10), BC_maxwait(30), BC_thirtyminprobability(10),
       BC_usejunk(true), BS_enabled(true), BS_maxMoney(0.0), BS_minExchange(0.0)
    {
    }

    virtual ~Config()
    {
    }

    /// Bot id
    volatile unsigned int id;

    /// Bot name
    std::string botname;

    /// Username
    std::string username;

    /// Password
    std::string password;

    /// User-Agent
    std::string userAgent;

    /// Proxy
    std::string proxy;

    /// Holds all possible games
    enum Games
    {
        PENNERGAME_H  =  0,
        PENNERGAME_B  =  1,
        PENNERGAME_M  =  2,
        DOSSERGAME    =  3,
        MENELGAME_W   =  4,
        MENELGAME_K   =  5,
        CLODOGAME_P   =  6,
        CLODOGAME_M   =  7,
        MENDIGOGAME   =  8,
        SERSERIONLINE =  9,
        BUMRISE       = 10,
        FAVELADOGAME  = 11,
        MALLE         = 12,
        KOELN         = 13,
        UPDATECHECK   = 14
    };

    /// Bot specific game
    Games game;
    bool americanFormat;
    bool hasCaptcha;

    std::string website;


    /* BOTTLECOLLECT */
    bool BC_enabled;
    unsigned int BC_minwait;
    unsigned int BC_maxwait;
    unsigned int BC_thirtyminprobability;
    bool BC_usejunk;

    /* BOTTLESELL */
    bool BS_enabled;
    double BS_maxMoney;
    double BS_minExchange;

#ifdef PBOT_SPECIAL

    /* AUTOSKILL */
    bool AS_enabled;
    enum skillCode
    {
        ATT = 0,
        DEF = 1,
        DEX = 2,
        SPEECH = 3,
        EDU = 4,
        MUSIC = 5,
        SOCIAL = 6,
        CONCENTRATION = 7,
        PICKPOCKET = 8
    };
    std::vector<skillCode> skills;

#endif /* PBOT_SPECIAL */

};

}
}

#endif // __CONFIG_HPP__
